Bases, Validação

Sobre as Bases e Validação

Meu objetivo com esse projeto é entender o padrão de consumo de música em relação aos artistas mais buscados no site de e-commerce da Universal Music Group. Mais do que isso, analisar a popularidade dos cantores e das bandas em uma das maiores redes sociais do mundo especialmente em quesito de campanhas publicitárias orgânicas, o Instagram.

Para esse projeto usei três bases de dados diferentes. A primeira foi adquirida a partir do Deezer API, os dados foram puxados em R e o script se encontra na pasta “scripts” no repositório GitHub. Essa base mostra que para cada artista existem outros 20 que costumam ser populares entre os mesmos ouvintes. O formato do arquivo é CSV e o nome dentro do repositório é artistas_relacionados.csv

A segunda base chama-se insta.xlsx e mosta o número de seguidores de cada um dos artistas principais da amostra. Cada linha equivale a uma amostra, sendo ela um dos top 40 artistas mais buscados na Universal Music Store. Alguns valores estão nulos pois alguns já faleceram e mesmo que possuam a conta na rede, a Universal Music Group, por questão ética, não investe em campanhas de e-commerce desses artistas portanto não faz sentido os manter na análise. Esses valores foram imputados manualmente por mim mesma em uma planilha excel já que não consegui baixar os valores através do Instagram API.

A última base contém valores de ouvintes mensais de cada artista e gênero musical predominante de cada um deles. As bases de dados brutas estão em formato .xlsx, os dados de gênero foram retornados a partir de IA (e revisados por mim conforme o catálogo da UMG) e os de ouvintes mensais foram pesquisados manualmente no Spotify.

Apesar das fontes de ouvintes mensais e de artistas correlacionados serem diferentes isso não afeta o resultado final uma vez que as duas bases de dados são suficientemente grandes para o trabalho não ficar enviesado e os dados não são comparados entre si, muito menos em valor absoluto. A proporção de ouvintes mensais é comparada em relação à propria base e artistas correlacionados nem correspondem a valores numéricos.



Glossário de Variáveis

  • artistas é a variável que refere-se aos artistas mais buscados na aba de pesquisa da Universal Music Store. Para entender as possíveis estratégias a serem usadas para expandir o e-commerce é interessante que analise-se os mais populares no site de merchandising, mais do que os maiores na indústria da música em si;
  • correlacao_1 a correlacao_20 são as variáveis que, como mencionado antes, referem-se aos artistas que costumam também ser escutados pelo mesmo público do artista principal da amostra, em ordem decrescente (correlacao_1 é a correlação mais forte e correlacao_20 a mais fraca);
  • insta é a coluna que contém os valores do número de seguidores dos artistas no Instagram. No caso das bandas, a conta considerada foi a do grupo;
  • gênero contém informações sobre o gênero prodominante de cada artista da coluna principal;
  • ouvintes_mensais são os dados disponíveis no Spotify sobre a quantidade de ouvintes mensais de cada artista.



Limpeza e Manipulação de Dados

O problema incial foi que os dados não estavam no formato correto de data frame uma vez que a primeira linha continha todos os principais artistas e as linhas seguintes continham as informações não numéricas conforme a coluna do artista correspondente. Ou seja, cada coluna represetava uma amostra, e não cada linha como deveria ser. Portanto não era possível adicionar dados numéricos já que em cada coluna só se pode ser um tipo de dado. Além disso, o programa estava reconhecendo como se o nome de cada coluna fosse o imput do primeiro artista e isso estava distorcendo as reais dimensões do dataframe. Por isso o col_names = FALSE

dados <- read_csv("artistas_relacionados.csv", col_names = FALSE)
## Rows: 21 Columns: 40
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (40): X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 X31 X32 X33 X34 X35 X36 X37 X38 X39 X40
Anitta Ariana Grande Billie Eilish BLACKPINK Bob Marley & The Wailers BTS Camila Cabello Carol Biazin Charlie Brown Jr. Chappell Roan Cazuza Demi Lovato Doechii DUDA BEAT Engenheiros do Hawaii Gracie Abrams Guns N’ Roses Imagine Dragons Jão Justin Bieber Katy Perry Lady Gaga Maria Bethânia Metallica Niall Horan Olivia Rodrigo Queen RBD Rihanna Rita Lee Sabrina Carpenter Selena Gomez Shawn Mendes Taylor Swift The Beatles The Rolling Stones The Weeknd U2 Zeca Pagodinho Radiohead
Lexa Sabrina Carpenter Lana Del Rey JENNIE Alpha Blondy Agust D Selena Gomez DAY LIMNS O Rappa Reneé Rapp Rita Lee Miley Cyrus Megan Thee Stallion Jaloo Legião Urbana Taylor Swift Aerosmith OneRepublic Ananda Katy Perry Little Mix Katy Perry Gal Costa Iron Maiden 5 Seconds Of Summer Sabrina Carpenter The Rolling Stones Anahí Beyoncé Cazuza Taylor Swift Miley Cyrus Niall Horan Sabrina Carpenter The Rolling Stones The Doors Tory Lanez R.E.M. Jorge Aragão Jeff Buckley
Luísa Sonza Katy Perry Labrinth TWICE Peter Tosh j-hope Dua Lipa Gabriel Froede CPM 22 Conan Gray Cássia Eller Little Mix Doja Cat Marina Sena Biquini Cavadão Reneé Rapp Scorpions Coldplay Manu Gavassi Little Mix Lady Gaga Britney Spears Caetano Veloso Ozzy Osbourne Taylor Swift Taylor Swift Dire Straits Dulce María Britney Spears Tim Maia Tate McRae Dua Lipa Sam Smith One Direction John Lennon The Who Jr. Hi The Cranberries Grupo Fundo De Quintal Blur
Pabllo Vittar Camila Cabello Lorde LISA Steel Pulse Jungkook Fifth Harmony Marina Sena Detonautas Towa Bird Lulu Santos Selena Gomez Flo Milli Johnny Hooker Ira! Maisie Peters KISS Ed Sheeran Lou Garcia Shawn Mendes Kesha Miley Cyrus Gilberto Gil Megadeth Louis Tomlinson Conan Gray Pink Floyd Christian Chávez Lady Gaga Djavan Madison Beer Little Mix James Arthur Gracie Abrams Paul McCartney Jimi Hendrix XO The Cure Beth Carvalho Elliott Smith
Gloria Groove Selena Gomez Nessa Barrett ITZY Burning Spear Monsta X Sabrina Carpenter Elana Dara Raimundos MUNA Barão Vermelho Katy Perry Bree Runway Potyguara Bardo Os Paralamas do Sucesso Sabrina Carpenter Metallica Bastille Clarissa Miley Cyrus Miley Cyrus Kesha Ney Matogrosso Slash One Direction Reneé Rapp Bruce Springsteen David Bisbal Jennifer Lopez Gilberto Gil Selena Gomez Camila Cabello Alessia Cara Shawn Mendes The Doors The Beatles ZAYN Lenny Kravitz Arlindo Cruz Pixies

Com isso eu decidi criar um data frame a partir da matriz transposta da base inicial para corrigir o formato. A partir disso cada linha passou a corresponder a uma amostra (um artista) e cada coluna uma variável.

dadost <- as.data.frame(t(dados))



Além disso, renomeei as colunas:

names(dadost) <- c("artista", "correlacao_1", "correlacao_2", "correlacao_3", "correlacao_4",
                   "correlacao_5", "correlacao_6", "correlacao_7", "correlacao_8", "correlacao_9",
                   "correlacao_10", "correlacao_11", "correlacao_12", "correlacao_13",
                   "correlacao_14", "correlacao_15", "correlacao_16", "correlacao_17",
                   "correlacao_18", "correlacao_19", "correlacao_20")



Como pode-se ver abaixo o dado ficou organizado de modo que eu pudesse adicionar colunas com outros tipos de variáveis:

artista correlacao_1 correlacao_2 correlacao_3 correlacao_4 correlacao_5 correlacao_6 correlacao_7 correlacao_8 correlacao_9 correlacao_10 correlacao_11 correlacao_12 correlacao_13 correlacao_14 correlacao_15 correlacao_16 correlacao_17 correlacao_18 correlacao_19 correlacao_20
X1 Anitta Lexa Luísa Sonza Pabllo Vittar Gloria Groove PEDRO SAMPAIO DENNIS Rebecca Valesca Popozuda DJ Tubarão POCAH ZAAC Melody Jerry Smith MC Mirella Tília Gabily Mc Kevinho Hitmaker Dream Team do Passinho Lara Silva
X2 Ariana Grande Sabrina Carpenter Katy Perry Camila Cabello Selena Gomez Miley Cyrus Madison Beer Taylor Swift Lady Gaga Little Mix Demi Lovato Justin Bieber Meghan Trainor Fifth Harmony Lizzo Beyoncé Raye Zara Larsson Alessia Cara Carly Rae Jepsen Dua Lipa
X3 Billie Eilish Lana Del Rey Labrinth Lorde Nessa Barrett FINNEAS Conan Gray Harry Styles Madison Beer Olivia Rodrigo Jvke sombr Troye Sivan Melanie Martinez The Neighbourhood AURORA Taylor Swift Sarah Cothran Stephen Dawes Ashe Charlotte Lawrence
X4 BLACKPINK JENNIE TWICE LISA ITZY i-dle aespa Rosé LE SSERAFIM JEON SOMI IVE NAYEON BABYMONSTER Everglow Hwa Sa Red Velvet JISOO TAEYEON XG MAMAMOO NMIXX
X5 Bob Marley & The Wailers Alpha Blondy Peter Tosh Steel Pulse Burning Spear Israel Vibration Max Romeo The Gladiators Toots & The Maytals Ziggy Marley Clinton Fearon Gregory Isaacs Third World Jimmy Cliff Groundation Black Uhuru Eek-A-Mouse UB40 Horace Andy Dennis Brown Culture

Depois isso, integrei a base que continha informações sobre dados de seguidores (insta.xlsx) e a que tinha dados sobre gênero musical e ouvintes (genouv.xlsx) usando leftjoin (mais indicado) ou simplesmente “imputando” uma base na outra.

setwd("/Users/marianalopes/Downloads")

insta <- read_excel("seguidores_instaR.xlsx", sheet = "Planilha1")
dadost$insta <- insta$insta

genouv <- read_excel("genero_ouvintes.xlsx", sheet = "Planilha1")
genouv <- genouv %>%
  mutate(
    artista = str_replace_all(artista, "\\s", " "),
    artista = str_squish(artista)
  )
dadost <- dadost %>%
  left_join(
    genouv %>% select(artista, gênero, `ouvintes mensais`),
    by = "artista"
  )  
artista correlacao_1 correlacao_2 correlacao_3 correlacao_4 correlacao_5 correlacao_6 correlacao_7 correlacao_8 correlacao_9 correlacao_10 correlacao_11 correlacao_12 correlacao_13 correlacao_14 correlacao_15 correlacao_16 correlacao_17 correlacao_18 correlacao_19 correlacao_20 insta gênero ouvintes mensais
Anitta Lexa Luísa Sonza Pabllo Vittar Gloria Groove PEDRO SAMPAIO DENNIS Rebecca Valesca Popozuda DJ Tubarão POCAH ZAAC Melody Jerry Smith MC Mirella Tília Gabily Mc Kevinho Hitmaker Dream Team do Passinho Lara Silva 6.34e+07 Pop 35761973
Ariana Grande Sabrina Carpenter Katy Perry Camila Cabello Selena Gomez Miley Cyrus Madison Beer Taylor Swift Lady Gaga Little Mix Demi Lovato Justin Bieber Meghan Trainor Fifth Harmony Lizzo Beyoncé Raye Zara Larsson Alessia Cara Carly Rae Jepsen Dua Lipa 3.73e+08 Pop 80989301
Billie Eilish Lana Del Rey Labrinth Lorde Nessa Barrett FINNEAS Conan Gray Harry Styles Madison Beer Olivia Rodrigo Jvke sombr Troye Sivan Melanie Martinez The Neighbourhood AURORA Taylor Swift Sarah Cothran Stephen Dawes Ashe Charlotte Lawrence 1.24e+08 Pop 89363977
BLACKPINK JENNIE TWICE LISA ITZY i-dle aespa Rosé LE SSERAFIM JEON SOMI IVE NAYEON BABYMONSTER Everglow Hwa Sa Red Velvet JISOO TAEYEON XG MAMAMOO NMIXX 5.87e+07 Pop 30843379
Bob Marley & The Wailers Alpha Blondy Peter Tosh Steel Pulse Burning Spear Israel Vibration Max Romeo The Gladiators Toots & The Maytals Ziggy Marley Clinton Fearon Gregory Isaacs Third World Jimmy Cliff Groundation Black Uhuru Eek-A-Mouse UB40 Horace Andy Dennis Brown Culture NA Reggae 24226587



Grafo

A minha ideia de grafo levava em consideração que os gestores do meu projeto na FGV são Homer Simpsons (com todo respeito, meu desenho favorito da infância). Por isso decidi deixar bastante didático visualmente, com diferentes tamanhos de nós conforme a quantidade de ouvintes mensais que o artista tem na plataforma e cores diferentes conforme o gênero musical. É mais fácil tomar uma decisão gerencial quando se entende um pouco do contexto por trás de cada dado. Usando um pouco de criatividade pode-se criar um gráfico que contenha mais dados embutidos, fornecendo mais informações a partir de diferentes cores e formatações.

Abaixo explico o que cada parte da formatação do grafo significa.

1) Edges: Foram criados os edges para representar as conexões entre artistas, partindo da primeira coluna da base como origem e das demais colunas como destinos. Em seguida, essas relações foram organizadas em uma tabela de arestas, com a remoção dos valores ausentes, e depois todos os nomes que apareciam como origem ou destino foram reunidos em uma lista única de artistas que compõem o grafo:

# 1) Edges
from <- dadost[[1]]
tos  <- dadost[, 2:21]

edges <- data.frame(
  from = rep(from, times = ncol(tos)),
  to   = unlist(tos, use.names = FALSE)
) %>%
  filter(!is.na(to))



2) Lista de artistas: Foi criada uma lista completa de artistas a partir da união de todos que apareciam como origem e destino nas conexões, e em seguida foi utilizada a função unique( ) para garantir que cada artista aparecesse apenas uma vez nessa lista:

# 2) Lista de artistas
todos_artistas <- unique(c(edges$from, edges$to))



3) Nodes: Foram criados os nós para representar cada artista do grafo, organizados em um data frame com seus atributos. Primeiro, a lista completa de artistas foi associada às informações da base original (gênero e ouvintes mensais). Em seguida, os casos ausentes foram tratados: quando o gênero musical não estava definido, recebeu a categoria “Desconhecido”, e quando o número de ouvintes não existia, foi atribuído o valor padrão de 1000. Isso não distorceu as informações substanciais do grafo porque os únicos artistas que não continham esses dados eram os que faziam parte das colunas correlacao_1 a **correlacao_20*, portanto é até mesmo um modo interessante de verificar quais cantores não fazem parte da lista principal dos mais buscados na Universal Music Store. Por fim, foi definido um atributo extra chamado font_size, que ajusta o tamanho da fonte de acordo com a popularidade do artista — maior para quem tem mais de 90 milhões de ouvintes. Isso porque em circunferência maiores não há necessidade de manter a fonte tão pequena para visualizar o nome do artista, uma vez que nesse caso letras maiores não prejudicam a visibilidade dos nós da redondeza, como acontece no caso das circunferências muito pequenas:

# 3) Nodes com atributos
nodes <- data.frame(name = todos_artistas) %>%
  left_join(
    dadost %>% select(artista, gênero, `ouvintes mensais`),
    by = c("name" = "artista")
  ) %>%
  mutate(
    gênero = ifelse(is.na(gênero), "Desconhecido", gênero),
    `ouvintes mensais` = ifelse(is.na(`ouvintes mensais`), 1000, `ouvintes mensais`),
    font_size = ifelse(`ouvintes mensais` > 9.0e+07, 3, 2.2)
  )



4) Grafo inicial: O grafo inicial é criado para estruturar a rede básica de conexões entre os artistas, utilizando as arestas e os nós já preparados. Esse passo serve como uma primeira representação da rede, que permite verificar se os dados foram corretamente organizados e se o grafo está funcional. Ele é um ponto de partida geral, enquanto as recriações permitem gerar versões mais específicas e refinadas conforme a análise desejada:

# 4) Grafo inicial
g <- graph_from_data_frame(edges, vertices = nodes, directed = FALSE)



5) Paleta: Foi definida uma paleta de cores para identificar os gêneros musicais no grafo conforme a estética da Universal Music, atribuindo uma cor específica a cada estilo e agrupando gêneros semelhantes com a mesma tonalidade:

# 5) Paleta
paleta <- c(
  "Pop"         = "#8E44AD", # roxo
  "Rock"        = "#2C3E99", # azul escuro
  "Heavy metal" = "#2C3E99", # azul escuro
  "Funk"        = "#991232", # vermelho marsala
  "MPB & Samba" = "#991232", # vermelho marsala
  "MPB"         = "#991232", # vermelho marsala
  "Reggae"      = "#2980B9", # azul céu
  "R&B"         = "#2e9995", # verde água
  "Hip hop"     = "#2e9995", # verde água
  "Desconhecido"= "#F4D03F"  # amarelo
)



6) Pesos das arestas: Foram atribuídos pesos às arestas do grafo para controlar a força das conexões. As ligações entre artistas de gênero Pop com outros também Pop receberam um peso extremamente baixo tornando-as muito mais fracas, enquanto todas as demais conexões mantiveram peso igual a 1. O motivo disso foi porque os artistas Pop tinham circunferências de nós grandes e em geral eram muito correlacionados entre si (várias conexões em comum). Isso fazia com que os nós ficassem muito próximos, o que causava confusão e pouca legibilidade ou interpretabilidade do grafo:

# 6) Pesos das arestas
edges <- edges %>%
  left_join(nodes %>% select(name, gênero), by = c("from" = "name")) %>%
  rename(gen_from = gênero) %>%
  left_join(nodes %>% select(name, gênero), by = c("to" = "name")) %>%
  rename(gen_to = gênero) %>%
  mutate(weight = ifelse(gen_from == "Pop" & gen_to == "Pop", 0.000000000000000000000001, 1))



7) Recriar grafo: O grafo foi recriado incorporando agora os pesos definidos nas arestas, de modo que as conexões entre os artistas passem a refletir não apenas a existência da relação, mas também a intensidade dela:

# 7) Recriar grafo
g <- graph_from_data_frame(edges %>% select(from, to, weight), vertices = nodes, directed = FALSE)



8) Layout: Foi definido um layout para posicionar os artistas no grafo, controlando o afastamento entre eles de acordo com o número de nós, os pesos das conexões e um parâmetro de repulsão que evita sobreposição:

# 8) Layout
set.seed(123)
afastamento <- 2
coords <- layout_with_fr(
  g,
  niter = 15000,
  area = vcount(g)^4 * afastamento,
  repulserad = vcount(g)^4 * afastamento,
  weights = E(g)$weight
)
## Warning: The `area` argument of `layout_with_fr()` is deprecated as of igraph 0.8.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `repulserad` argument of `layout_with_fr()` is deprecated as of igraph
## 0.8.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.



9) Plot: Foi feito o plot do grafo utilizando as coordenadas já definidas. As conexões foram desenhadas em laranja, enquanto cada artista aparece como um ponto cujo tamanho reflete o número de ouvintes mensais e cuja cor indica o gênero, conforme a paleta criada. Os nomes dos artistas foram adicionados em fonte preta, e o gráfico foi formatado com tema limpo e legenda posicionada na parte inferior:

# 9) Plot
ggraph(g, layout = "manual", x = coords[,1], y = coords[,2]) + 
  geom_edge_link(colour = "orange", alpha = 0.8) +
  geom_node_point(aes(size = `ouvintes mensais`, fill = gênero),
                  shape = 21, stroke = 0) +
  geom_node_text(aes(label = name),
                 size = 2.2, color = "black", repel = FALSE) +  # fonte sempre preta
  scale_size_continuous(range = c(6, 24)) +
  scale_fill_manual(values = paleta) +
  theme_void() +
  theme(legend.position = "bottom")

OBS.: Para melhor visualização do grafo recomendo baixar o arquivo disponível na pasta “/grafo” no repositório.

O grafo mostra as diferentes correlações entre artistas. É interessante perceber que existem nós em comum e que assim como alguns artistas principais estão correlados entre si diretamente, existem casos nos quais artistas/nós intermediários ligam diferentes artistas principais. Além disso, podemos ver que existe um padrão de gênero musical na correlação. Por exemplo, todos os artistas de R&B são correlacionados com os de pop internacional. Outros padrões foram levadas em consideração para formar os Clusters 1, 2 e 3, cujos gráficos de barras de seguidores no Instagram são analisados na próxima seção.



Gráfico de Barras

É nessa seção que serão comparados os números de seguidores de cada artista no Instagram conforme o agrupamento feito de maneira exploratória a partir do grafo anterior. O principal critério de decisão foi as ligações entre os nós e de maneira secundária foi levado em conta o gênero musical de cada artista. Isso é relevante porque pode-se estimar o custo de patrocínio de cada artista em suas redes. A partir disso, entendendo quais artistas são mais correlacionados entre si, é possível encontrar métodos indiretos de atingir públicos maiores e, assim, aumentar o interesse do público pelos produtos da Universal e impulsionar as vendas no e-commerce.

Cluster 1: É o grupo composto de artistas pop internacionais e todos os R&B da base. Quando se analisa o grafo anterior esse é o cluster mais nítido pois todos os artistas estão correlacionados entre si de alguma maneira.

O interessante desse cluster é que ele possui uma banda de rock (“Imagine Dragons”) que não tem correlação com nenhuma outra banda do mesmo gênero mas que curiosamente tem algumas diferentes correlações com artistas Pop. Nisso vemos que o comportamento do consumidor não varia apenas com base em gênero mas também conforme outros fatores que influenciam suas percepções.

cluster1 <- dadost %>% filter(artista %in% c("Ariana Grande", "Billie Eilish", "Camila Cabello",
                                             "Chappell Roan", "Demi Lovato", "Doechii", 
                                             "Gracie Abrams", "Imagine Dragons", "Justin Bieber",
                                             "Katy Perry", "Lady Gaga", "Niall Horan",
                                             "Olivia Rodrigo", "Rihanna", "Sabrina Carpenter",
                                             "Selena Gomez", "Shawn Mendes", "Taylor Swift", 
                                             "The Weeknd"))

ggplot(cluster1, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
  geom_col() +
  scale_fill_manual(values = paleta) +
  theme_minimal() +
  labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

A interpretação gerencial é que, se caso seja concluído que o público que consome o conteúdo artístico e midiático desses artistas é suscetível a campanhas de marketing no Instagram, por exemplo, seria recomendado investir em “publis” nos perfis da Gracie Abrams, da Doechii ou Chappell Roan. Isso porque essas são as artistas que possuem menos seguidores na rede logo são mais baratas de custear campanhas e ainda assim públicos de artistas maiores seriam atingidos. Para a decisão final deveria-se analisar mais aprofundamente quais das três artistas têm mais influência e poder de convencimento no Instagram.



Cluster 2: É o grupo composto de artistas que em sua maioria não são correlacionados entre si mas que fazem parte do mesmo gênero musical.

cluster2 <- dadost %>% filter(artista %in% c("Anitta", "BLACKPINK", "BTS", "Carol Biazin", 
                                             "DUDA BEAT", "Jão", "RBD"))

ggplot(cluster2, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
  geom_col() +
  scale_fill_manual(values = paleta) +
  theme_minimal() +
  labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Nesse caso já que nem todos os artistas não são correlacionados entre si mesmo que façam parte do mesmo gênero Pop, deveria-se focar nos com menor seguidores (= menor custo para campanha) que têm correlação com artistas grandes. A única artista grande desse grupo que tem correlação com outros do cluster é a Anitta e esses cantores menores interessantes para uma campanha seriam Duda Beat, Carol Biazin. O Jão apesar de provavelmente ser barato de custear ele não tem uma correlação direta com a Anitta, apenas indireta, diferentemente das outras contoras.



Cluster 3: Esse é o cluster do rock (com exceção de Imagine Dragons), do MPB, do Pagode/Samba e do Reggae. Gêneros que parecem não fazer sentido entre si mas que quando analisadas as datas do auge dos artistas e o local de sucesso faz bastante sentido. Esse cluster na realidade une 2 grupos e 2 artistas isolados: um grupo de rock brasileiro e MPB, outro de rock internacional e heavy metal, um artista de pagode/samba que não tem correlações (Zeca Pagodinho) e um de Reggae (Bob Marley). Idealmente esse deveria ser dividido em mais de um cluster mas priorizei a simplificação de análise já que esses sub grupos compartilham similaridade da faixa etária do público que consome e também gêneros similares.

cluster3 <- dadost %>% filter(artista %in% c("Bob Marley & The Wailers", "Charlie Brown Jr.",
                                             "Cazuza", "Engenheiros do Hawaii", "Guns N' Roses",
                                             "Maria Bethânia", "Metallica", "Queen", "Rita Lee",
                                             "The Beatles", "The Rolling Stones", "U2", 
                                             "Zeca Pagodinho"))

ggplot(cluster3, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
  geom_col() +
  scale_fill_manual(values = paleta) +
  theme_minimal() +
  labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_col()`).

Levando em conta o conhecimento da Universal quanto ao seu público, sabe-se que as pessoas que consomem as músicas dos artistas desse cluster não são as mais suscetíveis a campanham em mídias sociais, caracteríticas mais atribuídas aos Millenials e Gen Z. Portanto, a recomendação gerencial nesse caso seria a de não investir em campanhas no Instagram desses artistas. Levando em conta o gráfico anterior, de qualquer maneira seria difícil escolher qual artista patrocinar pois os dois subgrupos são bem distintos em questão de tamanho no Instagram, o que significa que não seria possível atingir os artistas maiores com algum artista menor e mais barato pois nesse caso eles não estão correlacionados.



Divulgação de IA

O Chat GPT foi consultado em duas partes principais:

1- Formatação do grafo e dos gráficos em relação a cores dos nós e das barras, cores e tamanho das fontes das letras e tamanho dos nós.

2- Extração dos dados da Deezer API. Ele me ensinou a usar a plataforma, fez o código e me ensinou a colocar em prática.